using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.CodeDom.Compiler;

namespace NBusiness.CodeDom.Compiler
{
    [Serializable]
	public abstract class EntityCompiler : MarshalByRefObject, ICodeCompiler
	{
		public abstract CompilerResults CompileAssemblyFromFiles(EntityCompilerParameters options, params EntityResourceFile[] files);
		public abstract CompilerResults CompileAssemblyFromFamilies(EntityCompilerParameters options, EntityRoot root, params EntityResourceFile[] userFiles);

        #region ICodeCompiler Members

        public abstract CompilerResults CompileAssemblyFromDom(CompilerParameters options, System.CodeDom.CodeCompileUnit compilationUnit);

        public abstract CompilerResults CompileAssemblyFromDomBatch(CompilerParameters options, System.CodeDom.CodeCompileUnit[] compilationUnits);

        public abstract CompilerResults CompileAssemblyFromFile(CompilerParameters options, string fileName);

        public abstract CompilerResults CompileAssemblyFromFileBatch(CompilerParameters options, string[] fileNames);

        public abstract CompilerResults CompileAssemblyFromSource(CompilerParameters options, string source);

        public abstract CompilerResults CompileAssemblyFromSourceBatch(CompilerParameters options, string[] sources);

        #endregion
    }
}
